package com.mcp.converter.domain.rule.compatibility;

import com.mcp.converter.shared.enums.IncompatibilityType;
import com.mcp.converter.domain.checker.IncompatibilityDetail;

/**
 * 兼容性规则接口
 * 定义兼容性规则的基本属性和方法
 * @author zengxiong
 */
public interface CompatibilityRule {
    
    /**
     * 获取规则ID
     * @return 规则ID
     */
    String getId();
    
    /**
     * 获取规则名称
     * @return 规则名称
     */
    String getName();
    
    /**
     * 获取规则描述
     * @return 规则描述
     */
    String getDescription();
    
    /**
     * 获取不兼容类型
     * @return 不兼容类型
     */
    IncompatibilityType getIncompatibilityType();
    
    /**
     * 获取不兼容详情
     * @return 不兼容详情
     */
    IncompatibilityDetail getIncompatibilityDetail();
    
    /**
     * 检查是否匹配规则
     * @param target 检查目标
     * @return 是否匹配
     */
    boolean matches(Object target);
}
